
package std.unittest.mock
import std.collection.ArrayList

import std.unittest.mock.internal.*
import std.unittest.common.*
import std.collection.*
import std.unittest.common.PrettyText
import std.collection.HashMap
import std.sync.*
import std.unittest.mock.internal.FuncInfo
import std.unittest.common.PrettyPrintable
import std.unittest.mock.internal.ParameterInfo
import std.collection.enumerate
import std.fs.Path

@!APILevel[
    since: "22"
]
public sealed abstract class ActionSelector {
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func fails(): Unit
}

@!APILevel[
    since: "22"
]
public class MethodActionSelector<TRet> <: ActionSelector {
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exception: Exception): CardinalitySelector<MethodActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exceptionFactory: () -> Exception): CardinalitySelector<MethodActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returns(value: TRet): CardinalitySelector<MethodActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returns(valueFactory: () -> TRet): CardinalitySelector<MethodActionSelector<TRet>>
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returnsConsecutively(values: Array<TRet>): Continuation<MethodActionSelector<TRet>>
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returnsConsecutively(values: ArrayList<TRet>): Continuation<MethodActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func callsOriginal(): CardinalitySelector<MethodActionSelector<TRet>>
}

@!APILevel[
    since: "22"
]
public class GetterActionSelector<TRet> <: ActionSelector {
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exception: Exception): CardinalitySelector<GetterActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exceptionFactory: () -> Exception): CardinalitySelector<GetterActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returns(value: TRet): CardinalitySelector<GetterActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returns(valueFactory: () -> TRet): CardinalitySelector<GetterActionSelector<TRet>>
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returnsConsecutively(values: Array<TRet>): Continuation<GetterActionSelector<TRet>>
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returnsConsecutively(values: ArrayList<TRet>): Continuation<GetterActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getsOriginal(): CardinalitySelector<GetterActionSelector<TRet>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getsField(field: SyntheticField<TRet>): CardinalitySelector<GetterActionSelector<TRet>>
}

@!APILevel[
    since: "22"
]
public class SetterActionSelector<TArg> <: ActionSelector {
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exception: Exception): CardinalitySelector<SetterActionSelector<TArg>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func throws(exceptionFactory: () -> Exception): CardinalitySelector<SetterActionSelector<TArg>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func doesNothing(): CardinalitySelector<SetterActionSelector<TArg>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setsOriginal(): CardinalitySelector<SetterActionSelector<TArg>>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setsField(field: SyntheticField<TArg>): CardinalitySelector<SetterActionSelector<TArg>>
}

extend MethodActionSelector<Unit> {
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func returns(): CardinalitySelector<MethodActionSelector<Unit>>
}

@!APILevel[
    since: "22"
]
public abstract class ArgumentMatcher {
    @!APILevel[
        since: "22"
    ]
    public func withDescription(description: String): ArgumentMatcher
    
    @!APILevel[
        since: "22"
    ]
    public func forParameter(name: String): ArgumentMatcher
    
    @!APILevel[
        since: "22"
    ]
    public func matchesAny(arg: Any): Bool
}

@!APILevel[
    since: "22"
]
public abstract class TypedMatcher<T> <: ArgumentMatcher {
    @!APILevel[
        since: "22"
    ]
    public func matches(arg: T): Bool
    
    @!APILevel[
        since: "22"
    ]
    public override func matchesAny(arg: Any): Bool
}

@!APILevel[
    since: "22"
]
public class AnyMatcher <: ArgumentMatcher {
    @!APILevel[
        since: "22"
    ]
    public func matchesAny(_: Any)
}

@!APILevel[
    since: "22"
]
public class Matchers {
    @!APILevel[
        since: "22"
    ]
    public static func argThat<T>(predicate: (T) -> Bool): TypedMatcher<T>
    
    @!APILevel[
        since: "22"
    ]
    public static func argThatNot<T>(predicate: (T) -> Bool): TypedMatcher<T>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func argThat<T>(listener: ValueListener<T>, predicate: (T) -> Bool): TypedMatcher<T>
    
    @!APILevel[
        since: "22"
    ]
    public static func same<T>(target: T): TypedMatcher<T> where T <: Object
    
    @!APILevel[
        since: "22"
    ]
    public static func eq<T>(target: T): TypedMatcher<T> where T <: Equatable<T>
    
    @!APILevel[
        since: "22"
    ]
    public static func ofType<T>(): TypedMatcher<T>
    
    @!APILevel[
        since: "22"
    ]
    public static func any(): AnyMatcher
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func capture<T>(listener: ValueListener<T>): TypedMatcher<T>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func default<T>(target: T): TypedMatcher<T>
}

extend<T> TypedMatcher<T> {
    @!APILevel[
        since: "22"
    ]
    public func value(): T
}

extend AnyMatcher {
    @!APILevel[
        since: "22"
    ]
    public func value<T>(): T
}

@!APILevel[
    since: "22"
]
public interface ValueListener<T> {
    @!APILevel[
        since: "22"
    ]
    func lastValue(): Option<T>
    
    @!APILevel[
        since: "22"
    ]
    func allValues(): Array<T>
    
    @!APILevel[
        since: "22"
    ]
    func addCallback(callback: (T) -> Unit): Unit
    
    @!APILevel[
        since: "22"
    ]
    static func new(): ValueListener<T>
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    static func onEach(callback: (T) -> Unit): ValueListener<T>
}

@!APILevel[
    since: "22"
]
public class ConfigureMock {
    /**
    * @throws IllegalSynchronizationStateException
    * @throws MockFrameworkException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func stubFunction<TRet>(
        stubCall: () -> TRet,
        matchers: Array<ArgumentMatcher>,
        prefixRefName: Option<String>,
        methodName: String,
        callDescription: String,
        lineNumber: Int64
    ): MethodActionSelector<TRet>
    
    /**
    * @throws IllegalSynchronizationStateException
    * @throws MockFrameworkException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func stubGetter<TRet>(
        stubCall: () -> TRet,
        prefixRefName: Option<String>,
        fieldOrPropertyName: String,
        callDescription: String,
        lineNumber: Int64
    ): GetterActionSelector<TRet>
    
    /**
    * @throws IllegalSynchronizationStateException
    * @throws MockFrameworkException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func stubSetter<TArg>(
        stubCall: () -> Unit,
        _: () -> TArg,
        matcher: ArgumentMatcher,
        prefixRefName: Option<String>,
        fieldOrPropertyName: String,
        callDescription: String,
        lineNumber: Int64
    ): SetterActionSelector<TArg>
}

@!APILevel[
    since: "22"
]
public enum StubMode {
    @!APILevel[
        since: "22"
    ]
    ReturnsDefaults |
    @!APILevel[
        since: "22"
    ]
    SyntheticFields
}

/**
* @throws MockFrameworkInternalError
* @throws IllegalArgumentException
* @throws IndexOutOfBoundsException
* @throws IllegalSynchronizationStateException
*/
@Frozen
@!APILevel[
    since: "22",
    throwexception: true
]
public func mock<T>(): T

/**
* @throws MockFrameworkInternalError
* @throws IllegalArgumentException
* @throws IndexOutOfBoundsException
* @throws IllegalSynchronizationStateException
*/
@Frozen
@!APILevel[
    since: "22",
    throwexception: true
]
public func mock<T>(modes: Array<StubMode>): T

/**
* @throws MockFrameworkInternalError
* @throws IllegalArgumentException
* @throws IndexOutOfBoundsException
* @throws IllegalSynchronizationStateException
*/
@Frozen
@!APILevel[
    since: "22",
    throwexception: true
]
public func spy<T>(objectToSpyOn: T): T

@!APILevel[
    since: "22"
]
public abstract class PrettyException <: Exception & PrettyPrintable {
    @!APILevel[
        since: "22"
    ]
    public func pprint(to: PrettyPrinter): PrettyPrinter
}

@!APILevel[
    since: "22"
]
public class MockFrameworkInternalError <: PrettyException {
}

@!APILevel[
    since: "22"
]
public class MockFrameworkException <: PrettyException {
}

@!APILevel[
    since: "22"
]
public open class ExpectationFailedException <: PrettyException {
}

@!APILevel[
    since: "22"
]
public class UnnecessaryStubbingException <: PrettyException {
}

@!APILevel[
    since: "22"
]
public class UnstubbedInvocationException <: PrettyException {
}

@!APILevel[
    since: "22"
]
public class UnhandledCallException <: PrettyException {
}

@!APILevel[
    since: "22"
]
public class VerificationFailedException <: PrettyException {
}




@!APILevel[
    since: "22"
]
public class SyntheticField<T> {
    @!APILevel[
        since: "22"
    ]
    public static func create(initialValue!: T): SyntheticField<T>
}


@!APILevel[
    since: "22"
]
public class MockFramework {
    /**
    * @throws MockFrameworkException
    * @throws IllegalSynchronizationStateException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func openSession(name: String, sessionKind: MockSessionKind): Unit
    
    /**
    * @throws MockFrameworkException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws ExpectationFailedException
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func closeSession(): Unit
}








@!APILevel[
    since: "22"
]
public enum MockSessionKind {
    @!APILevel[
        since: "22"
    ]
    Forbidden |
    @!APILevel[
        since: "22"
    ]
    Stateless |
    @!APILevel[
        since: "22"
    ]
    Verifiable
}

@!APILevel[
    since: "22"
]
public class NoneMatcher <: ArgumentMatcher {
    @!APILevel[
        since: "22"
    ]
    public override func matchesAny(arg: Any): Bool
}

extend Matchers {
    @!APILevel[
        since: "22"
    ]
    public static func none(): NoneMatcher
}

extend NoneMatcher {
    @!APILevel[
        since: "22"
    ]
    public func value<T>(): Option<T>
}

@!APILevel[
    since: "22"
]
public class CardinalitySelector<A> where A <: ActionSelector {
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func anyTimes(): Unit
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func once(): Continuation<A>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func atLeastOnce(): Unit
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func times(expectedTimes: Int64): Continuation<A>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func times(min!: Int64, max!: Int64): Unit
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func atLeastTimes(minTimesExpected: Int64): Unit
}

@!APILevel[
    since: "22"
]
public class Continuation<A> where A <: ActionSelector {
    /**
    * @throws MockFrameworkException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkInternalError
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func then(): A
}

extend<T> Option<T> <: UntypedOption {
    @!APILevel[
        since: "22"
    ]
    public func value(): ?Any
}

@!APILevel[
    since: "22"
]
public enum Exhaustiveness {
    @!APILevel[
        since: "22"
    ]
    Exhaustive |
    @!APILevel[
        since: "22"
    ]
    Partial
}

@!APILevel[
    since: "22"
]
public class Verify {
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func that(statement: VerifyStatement): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func unordered(
        exhaustive: Exhaustiveness,
        collectStatements: (UnorderedVerifier) -> Unit
    ): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func unordered(collectStatements: (UnorderedVerifier) -> Unit): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func unordered(statements: Array<VerifyStatement>): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func unordered(
        exhaustive: Exhaustiveness,
        statements: Array<VerifyStatement>
    ): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func ordered(collectStatements: (OrderedVerifier) -> Unit): Unit
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkException
    * @throws VerificationFailedException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func ordered(statements: Array<VerifyStatement>): Unit
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkInternalError
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func clearInvocationLog(): Unit
    
    /**
    * @throws IllegalSynchronizationStateException
    * @throws MockFrameworkException
    * @throws IndexOutOfBoundsException
    * @throws MockFrameworkInternalError
    * @throws IllegalArgumentException
    * @throws VerificationFailedException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func noInteractions(mockObjects: Array<Object>): Unit
}

@!APILevel[
    since: "22"
]
public class UnorderedVerifier {
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func checkThat(statement: VerifyStatement): UnorderedVerifier
}

@!APILevel[
    since: "22"
]
public class OrderedVerifier {
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func checkThat(statement: VerifyStatement): OrderedVerifier
}

@!APILevel[
    since: "22"
]
public class VerifyStatement {
    /**
    * @throws MockFrameworkException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkInternalError
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func fromStub<R>(
        stubCall: () -> R,
        matchers: Array<ArgumentMatcher>,
        objName: Option<String>,
        declarationName: String,
        callDescription: String,
        lineNumber: Int64
    ): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func once(): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func atLeastOnce(): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func times(expectedTimes: Int64): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func times(min!: Int64, max!: Int64): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func atLeastTimes(minTimesExpected: Int64): VerifyStatement
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MockFrameworkException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func never(): VerifyStatement
}



